﻿using System;
using System.Linq;
using System.Data.Entity;

namespace WPFServices.Services
{
    public static class Orders
    {
        public static int CreateOrder(ORDER newOrder)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    db.ORDERS.Add(newOrder);
                    db.SaveChanges();
                    return newOrder.ID_ORD;
                }
            }
            catch (Exception e)
            {
                throw new Exception("Không thể thêm Order\n" + e.Message);
            }
        }

        public static ORDER GetOrderByID(int orderID)
        {
            try
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var or = db.ORDERS.Where(x => x.ID_ORD == orderID).Include(x=>x.CUSTOMER).Include(x=>x.USER).FirstOrDefault();
                    return or;
                }
            }
            catch (Exception e)
            {
                throw new Exception("Không lấy được Order: \n" + e.Message);
            }
        }


        /// <summary>
        /// Hàm cập nhật lại thông tin của hóa đơn
        ///  - nợ cũ
        ///  - trả trước
        ///  - tổng cộng
        ///  - Nhân viên
        /// </summary>
        /// <param name="orderToUpdate"></param>
        public static void UpdateOrder(ORDER orderToUpdate)
        {
            try 
            {
                using (var db = new VLXDKH_QLKEntities())
                {
                    var order = db.ORDERS.FirstOrDefault(x => x.ID_ORD == orderToUpdate.ID_ORD);
                    if (order != null)
                    {
                        order.OLD_DEBTS = orderToUpdate.OLD_DEBTS;
                        order.PRE_PAID = orderToUpdate.PRE_PAID;
                        order.TOTAL = orderToUpdate.TOTAL;
                        order.STATUS_ORD = orderToUpdate.TOTAL - orderToUpdate.PRE_PAID == 0 ? "0" : "1"; // thêm mới ngày 10/5 vì khi cập nhật sẽ thay đổi số tiền thiếu => còn nợ hay k?
                        order.ID_USER = orderToUpdate.ID_USER;
                        if (orderToUpdate.TOTAL - orderToUpdate.PRE_PAID == 0)
                            order.STATUS_ORD = "0";
                    }
                    db.SaveChanges();
                }
            }
            catch (Exception e) 
            {
                throw new Exception("Không cập nhật được Order: \n" + e.Message);
            }
        }
        
    }
}
